äžçäžã®ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžããããé«éã§ããã°ã¬ãã·ããªããŒãžããŒãã£ã³ã°ãå®çŸããããã³ããšã³ãã¹ããªãŒãã³ã°SSRã«ã€ããŠè§£èª¬ããŸãã
ããã³ããšã³ãã¹ããªãŒãã³ã°SSRïŒããã°ã¬ãã·ãããŒãžããŒãã£ã³ã°ã®æªæ¥
仿¥ã®æ¥éã«å€åããããžã¿ã«äžçã§ã¯ããŠã§ãããã©ãŒãã³ã¹ã«å¯ŸãããŠãŒã¶ãŒã®æåŸ ã¯ãã€ãŠãªãã»ã©é«ãŸã£ãŠããŸãã蚪åè ã¯ã³ã³ãã³ããžã®å³æã¢ã¯ã»ã¹ãèŠæ±ããèªã¿èŸŒã¿ã®é ããŠã§ããµã€ãã¯ã倧ããªäžæºããšã³ã²ãŒãžã¡ã³ãã®æå€±ããããŠæçµçã«ã¯ã³ã³ããŒãžã§ã³ã®æžå°ã«ã€ãªããå¯èœæ§ããããŸãããªãããªã€ã³ã¿ã©ã¯ãã£ããã£ãæäŸããåŸæ¥ã®ã·ã³ã°ã«ããŒãžã¢ããªã±ãŒã·ã§ã³ïŒSPAïŒã¯ãã¯ã©ã€ã¢ã³ããµã€ãã¬ã³ããªã³ã°ã¢ãããŒããåå ã§ãåæèªã¿èŸŒã¿æéã«èŠåŽããããšããããããŸãããµãŒããŒãµã€ãã¬ã³ããªã³ã°ïŒSSRïŒã¯ãããé«éãªåææç»ãæäŸãããœãªã¥ãŒã·ã§ã³ãšããŠç»å ŽããŸãããããããåŸæ¥ã®SSRã§ãããããã«ããã¯ãçºçããå¯èœæ§ããããŸããããã§ç»å Žããã®ããããã³ããšã³ãã¹ããªãŒãã³ã°ãµãŒããŒãµã€ãã¬ã³ããªã³ã°ïŒã¹ããªãŒãã³ã°SSRïŒã§ããããã¯ãããã°ã¬ãã·ãããŒãžããŒãã£ã³ã°ãåå®çŸ©ããäžçäžã®ãªãŒãã£ãšã³ã¹ã«åªãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããç»æçãªã¢ãããŒãã§ãã
é²åã®çè§£ïŒã¯ã©ã€ã¢ã³ããµã€ããããµãŒããŒãµã€ãã¬ã³ããªã³ã°ãž
ã¹ããªãŒãã³ã°SSRã®åœ±é¿ãååã«çè§£ããããã«ããŠã§ãã¬ã³ããªã³ã°æŠç¥ã®é²åãç°¡åã«æ¯ãè¿ã£ãŠã¿ãŸãããã
ã¯ã©ã€ã¢ã³ããµã€ãã¬ã³ããªã³ã°ïŒCSRïŒ
å žåçãªCSRã¢ããªã±ãŒã·ã§ã³ã§ã¯ããµãŒããŒã¯æå°éã®HTMLãã¡ã€ã«ãšå€§ããªJavaScriptãã³ãã«ãéä¿¡ããŸããæ¬¡ã«ããã©ãŠã¶ã¯JavaScriptãããŠã³ããŒãããŠå®è¡ããUIãã¬ã³ããªã³ã°ããŸããããã«ãããé«åºŠãªã€ã³ã¿ã©ã¯ãã£ãã§åçãªãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãå¯èœã«ãªããŸãããJavaScriptãããŠã³ããŒããããŠåŠçããããŸã§ã空çœã®ç»é¢ãããŒãã£ã³ã°ã¹ãããŒã衚瀺ãããããšãå€ããFirst Contentful PaintïŒFCPïŒããã³Largest Contentful PaintïŒLCPïŒãäœäžããŸãã
ãµãŒããŒãµã€ãã¬ã³ããªã³ã°ïŒSSRïŒ
SSRã¯ãHTMLããµãŒããŒäžã§ã¬ã³ããªã³ã°ããŠãã©ãŠã¶ã«éä¿¡ããããšã«ãããåæèªã¿èŸŒã¿ã®åé¡ã«å¯ŸåŠããŸããã€ãŸãããã©ãŠã¶ã¯ã³ã³ãã³ããã¯ããã«æ©ã衚瀺ã§ããããã«ãªããFCPãšLCPãåäžããŸãããã ããåŸæ¥ã®SSRã¯ãå®å šãªHTMLãéä¿¡ããåã«ãããŒãžå šäœããµãŒããŒäžã§ã¬ã³ããªã³ã°ãããã®ãåŸ ã€ã®ãäžè¬çã§ããããŒãžãè€éãªå ŽåããããŒã¿ã®ãã§ãããé ãå Žåã¯ãããã«ããé å»¶ãçºçããå¯èœæ§ãããããŠãŒã¶ãŒã¯ããŒãžå šäœãæºåã§ãããŸã§åŸ ããªããã°ãæäœã§ããŸããã
ããã³ããšã³ãã¹ããªãŒãã³ã°SSRãšã¯ïŒ
ããã³ããšã³ãã¹ããªãŒãã³ã°SSRã¯ããµãŒããŒãããŒãžå šäœãã¬ã³ããªã³ã°ãããã®ãåŸ ã€ã®ã§ã¯ãªããHTMLãã£ã³ã¯ãå©çšå¯èœã«ãªã次第ããã©ãŠã¶ã«éä¿¡ã§ããããã«ãããé«åºŠãªåœ¢åŒã®ãµãŒããŒãµã€ãã¬ã³ããªã³ã°ã§ããã€ãŸãããŠã§ãããŒãžã®ããŸããŸãªéšåãããŸããŸãªã¿ã€ãã³ã°ã§ããŒããããã€ã³ã¿ã©ã¯ãã£ãã«ãªããããããæµåçã§ããã°ã¬ãã·ããªèªã¿èŸŒã¿ãšã¯ã¹ããªãšã³ã¹ãçãŸããŸãã
å žåçãªeã³ããŒã¹è£œåããŒãžãæ³åããŠãã ãããã¹ããªãŒãã³ã°SSRã䜿çšãããšãããããŒãšããã²ãŒã·ã§ã³ãæåã«ããŒããããæ¬¡ã«è£œåç»åãšã¿ã€ãã«ã次ã«è£œåã®èª¬æãæåŸã«ãã«ãŒãã«è¿œå ããã¿ã³ãšé¢é£è£œåãããŒããããå ŽåããããŸãããããã®ã³ã³ããŒãã³ãã¯ããããåå¥ã«ã¹ããªãŒãã³ã°ã§ããããããŠãŒã¶ãŒã¯ããŒãžã®ä»ã®éšåããŸã ãã§ãããŸãã¯ã¬ã³ããªã³ã°ãããŠããéã«ãããŒãžã®äžéšã衚瀺ããŠæäœã§ããŸãã
ããã³ããšã³ãã¹ããªãŒãã³ã°SSRã®äž»ãªå©ç¹
ããã³ããšã³ãã¹ããªãŒãã³ã°SSRãæ¡çšããå©ç¹ã¯å€§ããããŠãŒã¶ãŒã®æºè¶³åºŠãšããžãã¹ã®ææã«çŽæ¥åœ±é¿ããŸãã
1. äœæããã©ãŒãã³ã¹ã®å€§å¹ ãªåäž
ããã¯ããããæãéèŠãªå©ç¹ã§ããã³ã³ãã³ããã¹ããªãŒãã³ã°ããããšã«ããããŠãŒã¶ãŒã¯ããŒãžã®ã¢ã¯ã·ã§ã³å¯èœãªéšåãã¯ããã«éã確èªã§ããŸããããã«ããããŠãŒã¶ãŒãå®å šã«ããŒããããããŒãžãåŸ æ©ããæéãççž®ãããããè¯ãäœæããã©ãŒãã³ã¹ã«ã€ãªãããŸããããšããã¹ãŠãããŒãããåèšæéãåæ§ã«é·ããŠãã§ããããã¯ãããŸããŸãªãããã¯ãŒã¯ç¶æ³ãšã¬ã€ãã³ã·ãçµéšããå¯èœæ§ã®ããã°ããŒãã«ãªãŒãã£ãšã³ã¹ã«ãšã£ãŠäžå¯æ¬ ã§ãã
2. ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ïŒUXïŒã®åäž
ããã°ã¬ãã·ãã«èªã¿èŸŒãŸããããŒãžã¯ãããå¿çæ§ãé«ããé åçã§ãããŠãŒã¶ãŒã¯ã衚瀺ãããèŠçŽ ã®æäœãéå§ã§ãããããããªãŒãºããç»é¢ã空çœã®ç»é¢ã«é¢é£ãããã©ã¹ãã¬ãŒã·ã§ã³ãåé¿ã§ããŸãããã®æ¹åãããUXã¯ããšã³ã²ãŒãžã¡ã³ãçã®åäžãçŽåž°çã®äœäžã顧客ãã€ã€ãªãã£ã®åäžã«ã€ãªããå¯èœæ§ããããŸãã
3. ããåªããSEOããã©ãŒãã³ã¹
æ€çŽ¢ãšã³ãžã³ã®ã¯ããŒã©ãŒã¯ãã³ã³ãã³ããããã°ã¬ãã·ãã«ã¹ããªãŒãã³ã°ããããšãã«ãããè¿ éã«ã¢ã¯ã»ã¹ããŠã€ã³ããã¯ã¹ãäœæã§ããŸããã³ã³ãã³ããã¯ããŒã«ã§ããã®ãæ©ããã°æ©ãã»ã©ãSEOã«ãšã£ãŠæå©ã§ããæ€çŽ¢ãšã³ãžã³ã¯ãåªãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸãããŠã§ããµã€ãã奜ã¿ãããé«éã§ããã°ã¬ãã·ããªèªã¿èŸŒã¿ã¯ãããã«çŽæ¥è²¢ç®ããŸãã
4. ãªãœãŒã¹ã®å¹ççãªå©çš
ã¹ããªãŒãã³ã°SSRã«ããããµãŒããŒã¯å°ããã管çãããããã£ã³ã¯ã§ããŒã¿ãéä¿¡ã§ããŸããããã«ãããç¹ã«äœéãªæ¥ç¶ãŸãã¯ã€ã³ãã©ã¹ãã©ã¯ãã£ãéãããŠããå°åã®ãŠãŒã¶ãŒã«å¯ŸããŠããµãŒããŒãªãœãŒã¹ãšãããã¯ãŒã¯åž¯åå¹ ãããå¹ççã«äœ¿çšã§ããŸãã
5. Time to InteractiveïŒTTIïŒã®åäž
çŽæ¥ã®ç®æšã§ã¯ãããŸããããããŒãžã®äžéšãããŒãäžã«æäœã§ããæ©èœã¯ãããè¯ãTTIã«è²¢ç®ããŸãããŠãŒã¶ãŒã¯ãããŒãžå šäœã®JavaScriptãè§£æãããŠå®è¡ãããã®ãåŸ ããã«ããªã³ã¯ãã¯ãªãã¯ãããããã©ãŒã ã«èšå ¥ããããã³ã³ãã³ãã衚瀺ãããã§ããŸãã
ããã³ããšã³ãã¹ããªãŒãã³ã°SSRã¯ã©ã®ããã«æ©èœããŸããïŒ
ããã³ããšã³ãã¹ããªãŒãã³ã°SSRã®èåŸã«ããäž»èŠãªã¡ã«ããºã ã«ã¯ãç¹æ®ãªãµãŒããŒã¢ãŒããã¯ãã£ãšã¯ã©ã€ã¢ã³ããµã€ããã€ãã¬ãŒã·ã§ã³æŠç¥ãå«ãŸããŸããReact Server ComponentsïŒRSCïŒãåããReactããHTTP/2ã¹ããªãŒãã³ã°çšã®undiciãªã©ã®ã©ã€ãã©ãªãªã©ã®ãã¬ãŒã ã¯ãŒã¯ã¯ããã®æ©èœãæå¹ã«ããäžã§äžå¯æ¬ ã§ãã
ããã»ã¹ã«ã¯ãäžè¬çã«æ¬¡ã®ãã®ãå«ãŸããŸãã
- ãµãŒããŒãµã€ãå®è¡ïŒãµãŒããŒã¯Reactã³ã³ããŒãã³ãïŒãŸãã¯ä»ã®ãã¬ãŒã ã¯ãŒã¯ã®åçç©ïŒãå®è¡ããŠHTMLãçæããŸãã
- ãã£ã³ã¯å¿çïŒãµãŒããŒã¯ãããŒãžå šäœã®HTMLãåŸ ã€ä»£ããã«ãã¬ã³ããªã³ã°ããããšåæã«HTMLãã©ã°ã¡ã³ããéä¿¡ããŸãããããã®ãã©ã°ã¡ã³ãã¯ãã¯ã©ã€ã¢ã³ããçè§£ã§ããç¹å¥ãªããŒã«ãŒã§åºåãããããšããããããŸãã
- ã¯ã©ã€ã¢ã³ããµã€ããã€ãã¬ãŒã·ã§ã³ïŒãã©ãŠã¶ã¯ãããã®HTMLãã£ã³ã¯ãåä¿¡ããããããã¬ã³ããªã³ã°ãå§ããŸããåã ã®ã³ã³ããŒãã³ãã®JavaScriptãå©çšå¯èœã«ãªããšããããããã€ãã¬ãŒãããŠã€ã³ã¿ã©ã¯ãã£ãã«ããŸãããã®ãã€ãã¬ãŒã·ã§ã³ã¯ãã³ã³ããŒãã³ãããšã«ããã°ã¬ãã·ãã«çºçããããšãã§ããŸãã
- HTTP/2ãŸãã¯HTTP/3ïŒãããã®ãããã³ã«ã¯ãå¹ççãªã¹ããªãŒãã³ã°ã«äžå¯æ¬ ã§ããã1ã€ã®æ¥ç¶ã§è€æ°ã®ãªã¯ãšã¹ããšå¿çãå€éåã§ãããããã¬ã€ãã³ã·ãšãªãŒããŒããããåæžãããŸãã
äžè¬çãªãã¬ãŒã ã¯ãŒã¯ãšå®è£
ããã€ãã®ææ°ã®ããã³ããšã³ããã¬ãŒã ã¯ãŒã¯ãšã©ã€ãã©ãªã¯ãã¹ããªãŒãã³ã°SSRããµããŒãããããšãåãå ¥ããããç©æ¥µçã«éçºãããããŠããŸãã
1. ReactïŒNext.jsã䜿çšïŒ
人æ°ã®Reactãã¬ãŒã ã¯ãŒã¯ã§ããNext.jsã¯ãã¹ããªãŒãã³ã°SSRã®å®è£ ã®æåç·ã«ç«ã£ãŠããŸããReact Server Componentsããææ°ããŒãžã§ã³ã§ã®ã¹ããªãŒãã³ã°ã®çµã¿èŸŒã¿ãµããŒããªã©ã®æ©èœã«ãããéçºè ã¯ããã°ã¬ãã·ãããŒãã£ã³ã°æ©èœãåãã髿§èœãªã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããŸãã
Next.jsã¹ããªãŒãã³ã°SSRã®äž»ãªæŠå¿µïŒ
- ã¹ããªãŒãã³ã°HTMLïŒNext.jsã¯ãããŒãžãšã¬ã€ã¢ãŠãã®HTMLå¿çãèªåçã«ã¹ããªãŒãã³ã°ããŸãã
- ããŒã¿ã®ãã§ããã®ããã®ãµã¹ãã³ã¹ïŒReactã®
SuspenseAPIã¯ããµãŒããŒã§ã®ããŒã¿ã®ãã§ãããšã·ãŒã ã¬ã¹ã«é£æºããã³ã³ããŒãã³ãã¯ããŒã¿ããã§ãããããŠããéã«ãã©ãŒã«ããã¯ã³ã³ãã³ããã¬ã³ããªã³ã°ããæºåãå®äºãããæçµã³ã³ãã³ããã¹ããªãŒãã³ã°ã§ããŸãã - éžæçãã€ãã¬ãŒã·ã§ã³ïŒãã©ãŠã¶ã¯ãJavaScriptãã³ãã«å šäœãããŠã³ããŒããããŠè§£æãããã®ãåŸ ã€ã®ã§ã¯ãªããã³ã³ããŒãã³ããå©çšå¯èœã«ãªããšãã€ãã¬ãŒãã§ããŸãã
2. Vue.jsïŒNuxt.jsã䜿çšïŒ
Vue.jsã®äž»èŠãªãã¬ãŒã ã¯ãŒã¯ã§ããNuxt.jsããå ç¢ãªSSRæ©èœãæäŸããŠãããã¹ããªãŒãã³ã°ã®ãµããŒãã«åããŠé²åããŠããŸãããã®ã¢ãŒããã¯ãã£ã«ãããå¹ççãªãµãŒããŒã¬ã³ããªã³ã°ãå¯èœã«ãªããé²è¡äžã®éçºã¯é«åºŠãªã¹ããªãŒãã³ã°æ©èœãçµ±åããããšãç®çãšããŠããŸãã
3. ãã®ä»ã®ãã¬ãŒã ã¯ãŒã¯ãšã©ã€ãã©ãª
ReactãšVueãåªå¢ã§ãããä»ã®ãã¬ãŒã ã¯ãŒã¯ãšã©ã€ãã©ãªããããã°ã¬ãã·ãããŒãã£ã³ã°ãšã¹ããªãŒãã³ã°ãéããŠãŠã§ãããã©ãŒãã³ã¹ãåäžãããããã«ãåæ§ã®ãã¿ãŒã³ã暡玢ãŸãã¯æ¡çšããŠããŸãã
課é¡ãšèæ ®äºé
ãã®å°è±¡çãªã¡ãªããã«ãããããããããã³ããšã³ãã¹ããªãŒãã³ã°SSRã®å®è£ ã«ã¯ãç¬èªã®èª²é¡ã䌎ããŸãã
1. ãµãŒããŒã®è€éãã®å¢å
ãã£ã³ã¯å¿çã®ç®¡çãšé©åãªãã€ãã¬ãŒã·ã§ã³ã®ç¢ºä¿ã¯ããµãŒããŒãµã€ãããžãã¯ãšç¶æ 管çã«è€éããå ããå¯èœæ§ããããŸããéçºè ã¯ãããŒã¿ã®ãã§ããæ¹æ³ãšãµãŒããŒãšã¯ã©ã€ã¢ã³ãã®éã§æž¡ãããæ¹æ³ã«æ³šæããå¿ èŠããããŸãã
2. ãã€ãã¬ãŒã·ã§ã³ã®ãã¹ããã
ãµãŒããŒäžã§ã¬ã³ããªã³ã°ãããHTMLãšã¯ã©ã€ã¢ã³ããµã€ãã¬ã³ããªã³ã°ã®åºåãç°ãªãå Žåããã€ãã¬ãŒã·ã§ã³ã®ãã¹ããããçºçãããšã©ãŒãäºæããªãåäœãåŒãèµ·ããå¯èœæ§ããããŸããæ éãªã³ã³ããŒãã³ãèšèšãšããŒã¿ã®æŽåæ§ãäžå¯æ¬ ã§ãã
3. ãã£ãã·ã¥ã®ç¡å¹å
ã¹ããªãŒãã³ã°å¿çã«ã¯ããã£ãã·ã³ã°æŠç¥ãé©å¿ãããå¿ èŠããããŸããåã ã®ãã£ã³ã¯ãŸãã¯åçã³ã³ãã³ãã®ãã£ãã·ã³ã°ã«ã¯ãåŸæ¥ã®ãã«ããŒãžãã£ãã·ã³ã°ãããæŽç·Žãããã¢ãããŒããå¿ èŠã§ãã
4. ãããã°
ããã°ã¬ãã·ãããŒãã£ã³ã°ã¢ããªã±ãŒã·ã§ã³ã®ãããã°ã¯ãããå°é£ã«ãªãå¯èœæ§ããããŸãããšã©ãŒãŸãã¯ããã©ãŒãã³ã¹ã®ããã«ããã¯ã®åå ãç¹å®ããã«ã¯ããµãŒããŒãšã¯ã©ã€ã¢ã³ãã®äž¡æ¹ã§ã®ããŒã¿ã®æµããšã¬ã³ããªã³ã°ãçè§£ããå¿ èŠããããŸãã
5. ãã©ãŠã¶ãšãããã¯ãŒã¯ã®äºææ§
HTTP/2ãšHTTP/3ã¯åºããµããŒããããŠããŸãããç¹ã«ããŸããŸãªã€ã³ã¿ãŒãããã¢ã¯ã»ã¹ãæã€ã°ããŒãã«ãªãŒãã£ãšã³ã¹åãã«ããã¹ãŠã®ã¿ãŒã²ãããã©ãŠã¶ãšãããã¯ãŒã¯æ¡ä»¶ã§äºææ§ã確ä¿ããããšãäžå¯æ¬ ã§ãã
6. åŠç¿æ²ç·
React Server ComponentsãSuspenseãªã©ã®æ°ãããã¿ãŒã³ãæ¡çšããã«ã¯ãéçºããŒã ã®åŠç¿æ²ç·ãå¿ èŠã«ãªãå ŽåããããŸããå®è£ ãæåãããã«ã¯ãé©åãªãã¬ãŒãã³ã°ãšåºæ¬ååã®çè§£ãå¿ èŠã§ãã
ã°ããŒãã«å®è£ ã®ããã®æŠç¥
ã°ããŒãã«ãªãŒãã£ãšã³ã¹åãã«ããã³ããšã³ãã¹ããªãŒãã³ã°SSRããããã€ããå Žåã¯ãæ¬¡ã®æŠç¥ãæ€èšããŠãã ããã
- ã³ã³ãã³ãé ä¿¡ãããã¯ãŒã¯ïŒCDNïŒã®æé©åïŒCDNãæŽ»çšããŠãéçã¢ã»ããããã£ãã·ã¥ããŠæäŸããæœåšçã«ã¯ããŠãŒã¶ãŒã®è¿ãã§äºåã«ã¬ã³ããªã³ã°ãããHTMLãã©ã°ã¡ã³ããæäŸããã¬ã€ãã³ã·ãåæžããŸãã
- ãšããžã³ã³ãã¥ãŒãã£ã³ã°ïŒã¢ããªã±ãŒã·ã§ã³ãŸãã¯ãã®äžéšããšããžãã±ãŒã·ã§ã³ã«ãããã€ããŠãäžçäžã®ãŠãŒã¶ãŒã®ã¬ã€ãã³ã·ãããã«æå°éã«æããããšãæ€èšããŠãã ããã
- åœéåïŒi18nïŒãšããŒã«ã©ã€ãºïŒl10nïŒïŒã¹ããªãŒãã³ã°æŠç¥ã§ãããŸããŸãªèšèªãå°åãããã³æåçãã¥ã¢ã³ã¹ãèæ ®ããŠãã ãããããã«ã¯ããŠãŒã¶ãŒã®ãã±ãŒã«ã«åºã¥ããŠããŒã¿ããã§ããããã³ã¬ã³ããªã³ã°ãããæ¹æ³ãå«ãŸããŸãã
- ããã°ã¬ãã·ããšã³ãã³ã¹ã¡ã³ãïŒé«åºŠãªSSRã䜿çšããå Žåã§ããåžžã«å ç¢ãªã¯ã©ã€ã¢ã³ããµã€ããšã¯ã¹ããªãšã³ã¹ã«ãã©ãŒã«ããã¯ããŸããããã«ãããå€ããã©ãŠã¶ãŸãã¯JavaScriptã®ãµããŒããéãããŠãããŠãŒã¶ãŒã§ããæ©èœçãªãŠã§ããµã€ãã確å®ã«å©çšã§ããããã«ãªããŸãã
- ããã©ãŒãã³ã¹ç£èŠïŒããŸããŸãªå°åããããã¯ãŒã¯æ¡ä»¶äžã§ã¡ããªãã¯ã远跡ã§ããå æ¬çãªããã©ãŒãã³ã¹ç£èŠããŒã«ãå®è£ ããŸããããã«ãããããã«ããã¯ãšæé©åã®é åãç¹å®ã§ããŸãã
- A/Bãã¹ãïŒããŸããŸãªã¹ããªãŒãã³ã°æŠç¥ãšã³ã³ãã³ãé ä¿¡é åºã詊ããŠãç¹å®ã®ãŠãŒã¶ãŒããŒã¹ãšã³ã³ãã³ãã«æé©ãªãã®ã確èªããŸãã
å®è·µçãªäŸãšãŠãŒã¹ã±ãŒã¹
ããã³ããšã³ãã¹ããªãŒãã³ã°SSRã¯ã次ã®ã¢ããªã±ãŒã·ã§ã³ã«ç¹ã«åœ¹ç«ã¡ãŸãã
- eã³ããŒã¹è£œåããŒãžïŒè£œåç»åã説æãäŸ¡æ Œãã«ãŒãã«è¿œå ãã¿ã³ãåå¥ã«ã¹ããªãŒãã³ã°ããŸãã
- ãã¥ãŒã¹èšäºãšããã°ïŒäž»èŠãªèšäºã³ã³ãã³ããæåã«ããŒãããé¢é£ããèšäºãã³ã¡ã³ããåºåãã¹ããªãŒãã³ã°ããŸãã
- ããã·ã¥ããŒããšç®¡çããã«ïŒããŸããŸãªãŠã£ãžã§ãããŸãã¯ããŒã¿ããŒãã«ãå©çšå¯èœã«ãªã£ããšãã«ã¹ããªãŒãã³ã°ãããŠãŒã¶ãŒãä»ã®ã»ã¯ã·ã§ã³ãåŸ ã£ãŠããéãããã·ã¥ããŒãã®äžéšãæäœã§ããããã«ããŸãã
- ãœãŒã·ã£ã«ã¡ãã£ã¢ãã£ãŒãïŒæçš¿ããŠãŒã¶ãŒãããã¡ã€ã«ãããã³é¢é£ã³ã³ãã³ããããã°ã¬ãã·ãã«ã¹ããªãŒãã³ã°ããŸãã
- æ€èšŒãå«ã倧ããªãã©ãŒã ïŒãã©ãŒã ã»ã¯ã·ã§ã³ãã¹ããªãŒãã³ã°ããä»ã®éšåãåŠçãããŠããéã«ãæ€èšŒæžã¿ã®ãã£ãŒã«ããšã®å¯Ÿè©±ãéå§ããŸãã
ãŠã§ãããã©ãŒãã³ã¹ã®æªæ¥
ããã³ããšã³ãã¹ããªãŒãã³ã°SSRã¯ããŠã§ãããã©ãŒãã³ã¹ã®å€§å¹ ãªé²æ©ã衚ããŠããŸããããã°ã¬ãã·ãããŒãã£ã³ã°ãæå¹ã«ããããšã§ãåæã®èªã¿èŸŒã¿é床ãç ç²ã«ããããšãªãããªããã§ã€ã³ã¿ã©ã¯ãã£ããªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸãããšããäžæ žçãªèª²é¡ã«çŽæ¥åãçµãã§ããŸãããã¬ãŒã ã¯ãŒã¯ãšãã©ãŠã¶ãã¯ãããžãŒãé²åãç¶ããã«ã€ããŠãã¹ããªãŒãã³ã°SSRããçã«ã°ããŒãã«ãªãªãŒãã£ãšã³ã¹åãã«ã髿§èœã§ãŠãŒã¶ãŒäžå¿ã®Webã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®æšæºçãªãã©ã¯ãã£ã¹ã«ãªãããšãæåŸ ã§ããŸãã
ã³ã³ãã³ããæççã«éä¿¡ãããŠãŒã¶ãŒãããŒãããããšãã«ããŒãžã®äžéšã衚瀺ããŠæäœã§ããæ©èœã¯ãã²ãŒã ãã§ã³ãžã£ãŒã§ããããã«ããããŠãŒã¶ãŒã®é床ãšå¿çæ§ã®èªèãå€ãããããé åçã§æºè¶³ã®ãããªã³ã©ã€ã³ãšã¯ã¹ããªãšã³ã¹ã«ã€ãªãããŸããã°ããŒãã«ãªé¡§å®¢ããŒã¹ãæç²ããç¶æããããšããŠããäŒæ¥ã«ãšã£ãŠãããã³ããšã³ãã¹ããªãŒãã³ã°SSRããã¹ã¿ãŒããããšã¯ãåãªãå©ç¹ã§ã¯ãªããå¿ èŠäžå¯æ¬ ã«ãªãã€ã€ãããŸãã
éçºè ã®ããã®å®çšçãªæŽå¯
- ææ°ã®ãã¬ãŒã ã¯ãŒã¯ãæ¡çšããïŒæ°ããã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããŠããå Žåããæ¢åã®ã¢ããªã±ãŒã·ã§ã³ãæ¹ä¿®ããŠããå Žåã¯ãã¹ããªãŒãã³ã°SSRãæåãããµããŒãããŠããNext.jsãªã©ã®ãã¬ãŒã ã¯ãŒã¯ãæ€èšããŠãã ããã
- React Server Componentsãçè§£ããïŒReactã䜿çšããŠããå ŽåïŒïŒRSCãšããããããµãŒããŒãã¡ãŒã¹ãã¬ã³ããªã³ã°ãšããŒã¿ã®ãã§ãããã©ã®ããã«æå¹ã«ããããçè§£ããŸãã
- ããŒã¿ãã§ããã®å¹çãåªå ããïŒã³ã³ãã³ããè¿ éãã€å¹ççã«ã¹ããªãŒãã³ã°ãããããã«ããµãŒããŒã§ã®ããŒã¿ãã§ãããæé©åããŸãã
- ããŒãã£ã³ã°ç¶æ
ã®ãµã¹ãã³ã¹ãå®è£
ããïŒéåæããŒã¿ã«äŸåããã³ã³ããŒãã³ãã®ããŒãã£ã³ã°ç¶æ
ãé©åã«åŠçããã«ã¯ã
SuspenseAPIã䜿çšããŸãã - ããŸããŸãªãããã¯ãŒã¯æ¡ä»¶ã§ãã¹ãããïŒããŸããŸãªãããã¯ãŒã¯é床ãšã¬ã€ãã³ã·ãã·ãã¥ã¬ãŒãããããŒã«ã䜿çšããŠãã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã宿çã«ãã¹ããããã¹ãŠã®ãŠãŒã¶ãŒã«äžè²«ãããšã¯ã¹ããªãšã³ã¹ãä¿èšŒããŸãã
- ã³ã¢Web Vitalsãç£èŠããïŒLCPãFIDïŒãŸãã¯INPïŒãCLSãªã©ã®ã³ã¢Web Vitalsã«çްå¿ã®æ³šæãæããã¹ããªãŒãã³ã°SSRããããã®ã¡ããªãã¯ã«çŽæ¥åœ±é¿ãäžããŸãã
- JavaScriptãã€ããŒãããªãŒã³ã«ä¿ã€ïŒSSRã¯åæã¬ã³ããªã³ã°ã«åœ¹ç«ã¡ãŸããã倧ããªJavaScriptãã³ãã«ã¯ã€ã³ã¿ã©ã¯ãã£ããã£ã劚ããå¯èœæ§ããããŸããã³ãŒãåå²ãšããªãŒã·ã§ã€ãã³ã°ã«çŠç¹ãåœãŠãŸãã
çµè«
ããã³ããšã³ãã¹ããªãŒãã³ã°SSRã¯ãåãªãæè¡ç鲿©ã§ã¯ãããŸãããç§ãã¡ããŠã§ããšã¯ã¹ããªãšã³ã¹ãæ§ç¯ããæäŸããæ¹æ³ã«ããããã©ãã€ã ã·ããã§ããããã°ã¬ãã·ãããŒãžããŒãã£ã³ã°ãæå¹ã«ããããšã§ãéçºè ã¯ãèŠèŠçã«é åçã§ã€ã³ã¿ã©ã¯ãã£ããªã ãã§ãªãããŠãŒã¶ãŒã®å Žæããããã¯ãŒã¯æ¡ä»¶ã«é¢ä¿ãªããä¿¡ããããªãã»ã©é«éã§å¿çæ§ã®é«ãã¢ããªã±ãŒã·ã§ã³ãäœæã§ããŸããããžã¿ã«ç°å¢ãé²åãç¶ããã«ã€ããŠããããã®é«åºŠãªã¬ã³ããªã³ã°ææ³ãæ¡çšããããšã¯ãåªãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããã°ããŒãã«ãªèŠæš¡ã§ç«¶äºåãç¶æããããã«äžå¯æ¬ ã«ãªããŸãããŠã§ãããã©ãŒãã³ã¹ã®æªæ¥ã¯ã¹ããªãŒãã³ã°ã§ãããããã¯ããã«ãããŸãã